package com.sj.thread.c_025;


import java.util.Arrays;
import java.util.Random;
import java.util.concurrent.*;

/**
 * 再适当的位置加上若干个括号，保证结果最小。
 * eg line = 50-10+5 最小值为 50 - (10 + 5) = 35;
 * line = 001+003 最小值为 3
 * 数都是正整数
 */
public class SingletonDemo {
    /**
     * 多线程下的单例模式 DCL(double check lock)
     **/

    // volatile 此处作用 禁止指令重排
    public static volatile SingletonDemo singleton = null;

    private SingletonDemo() {
    }

    public static SingletonDemo getInstance() {
        if (singleton == null) {
            synchronized (SingletonDemo.class) {
                if (singleton == null) {
                    singleton = new SingletonDemo();
                }
            }
        }
        return singleton;
    }

}


